<template>
	<div class="wrapper">

		<!-- header部分 -->
		<header>
			<div class="go-back"><i class="fa fa-reply" @click="goback"></i></div>
			<p>商家列表</p>
		</header>

		<!-- 商家列表部分 -->
		<ul class="business">
			<li v-for="item in businessArr">
				<div class="business-img" @click="toBusinessInfo(item.businessId)">
					<img :src="item.businessImg">
					<div class="business-img-quantity" v-show="item.quantity>0">{{item.quantity}}</div>
					<!--右上角小红标-->
				</div>
				<div class="business-info" @click="toBusinessInfo(item.businessId)">
					<h3>{{item.businessName}}</h3>
					<p>&#165;{{item.starPrice}}起送 | &#165;{{item.deliveryPrice}}配送</p>
					<p>{{item.businessExplain}}</p>
				</div>
				<div @click="toListComment(item.businessId,item.businessImg,item.businessExplain,item.businessName)" v-show="item.averageRating!=null"
				 style="margin-left: auto;margin-bottom: auto;" class="star-rating">
					<div class="stars-container">
						<div class="stars-background">★★★★★</div>
						<div class="stars-filled" :style="{ width: `${(item.averageRating / 5) * 100}%` }">★★★★★</div>
					</div>
					<p style="font-size: 4vw;display: flex;justify-content: center;align-items: center;">{{Number(item.averageRating).toFixed(1)}}星</p>
				</div>
			</li>
		</ul>

		<div class="whiteblock"></div>

		<!-- 底部菜单部分 -->
		<Footer></Footer>

	</div>
</template>

<script>
	import Footer from '../../components/Footer.vue';

	export default {
		name: 'BusinessList',
		data() {
			return {
				orderTypeId: this.$route.query.orderTypeId, //获取主页传来的参数
				businessArr: [], //数组类型
				user: {},
			}
		},
		created() {
			this.user = this.$getSessionStorage("user");

			//根据orderTypeId查询商家信息
			let url = `BusinessController/listBusinessByOrderTypeId/${this.orderTypeId}`;
			this.$axios.get(url).then((response) => {
					this.businessArr = response.data.result;
					//判断是否登录
					if (this.user != null) {
						this.listCart();
						this.listComment();
					}
				})
				.catch((error) => {
					console.error(error);
				});
		},
		components: {
			Footer
		},
		methods: {
			listCart() {
				let url = `CartController/listCart/${this.user.userId}`;
				this.$axios.get(url).then((response) => {
						let cartArr = response.data.result;
						//遍历所有食品列表
						for (let businessItem of this.businessArr) {
							businessItem.quantity = 0;
							for (let cartItem of cartArr) {
								if (cartItem.businessId == businessItem.businessId) {
									businessItem.quantity += cartItem.quantity;
								}
							}
						}
						this.businessArr.sort();
					})
					.catch((error) => {
						console.error(error);
					});
			},
			listComment() {
				for (let businessItem of this.businessArr) {
					let url = `CommentController/getAverageRatingByBusinessId/${businessItem.businessId}`;
					this.$axios.get(url).then((response) => {
							businessItem.averageRating = response.data.result;
						})
						.catch((error) => {
							console.error(error);
						});
				}
			},
			toBusinessInfo(businessId) { //跳转商家详细页面
				this.$router.push({
					path: '/businessInfo',
					query: {
						businessId: businessId
					}
				});
			},
			toListComment(businessId, businessImg, businessExplain, businessName) {
				this.$router.push({
					path: '/commentList',
					query: {
						businessId: businessId,
						businessImg: businessImg,
						businessExplain: businessExplain,
						businessName: businessName,
					}
				});
			},
			goback() {
				this.$router.go(-1);
			}
		}
	}
</script>

<style scoped>
	/****************** 总容器 ******************/
	.wrapper {
		width: 100%;
		height: 100%;
	}

	.wapper .whiteblock {
		width: 100%;
		height: 14vw;
	}

	/****************** header部分 ******************/
	.wrapper header {
		width: 100%;
		height: 12vw;
		background-color: #0097FF;
		color: #fff;
		font-size: 4.8vw;

		position: fixed;
		left: 0;
		top: 0;
		z-index: 1000;

		display: flex;
		/*justify-content: center;*/
		align-items: center;
	}

	.wrapper header .go-back {
		padding: 0 32vw 0 2vw;
	}

	/****************** 商家列表部分 ******************/
	.wrapper .business {
		width: 100%;
		margin-top: 12vw;
		margin-bottom: 14vw;
	}

	.wrapper .business li {
		width: 100%;
		box-sizing: border-box;
		padding: 2.5vw;
		border-bottom: solid 1px #DDD;
		user-select: none;
		cursor: pointer;

		display: flex;
		align-items: center;
	}

	.wrapper .business li .business-img {
		/*这里设置为相当定位，成为business-img-quantity元素的父元素*/
		position: relative;
	}

	.wrapper .business li .business-img img {
		width: 20vw;
		height: 20vw;
	}

	.wrapper .business li .business-img .business-img-quantity {
		width: 5vw;
		height: 5vw;
		background-color: red;
		color: #fff;
		font-size: 3.6vw;
		border-radius: 2.5vw;

		display: flex;
		justify-content: center;
		align-items: center;

		/*设置成绝对定位，不占文档流空间*/
		position: absolute;
		right: -1.5vw;
		top: -1.5vw;
	}

	.wrapper .business li .business-info {
		margin-left: 3vw;
	}

	.wrapper .business li .business-info h3 {
		font-size: 3.8vw;
		color: #555;
	}

	.wrapper .business li .business-info p {
		font-size: 3vw;
		color: #888;
		margin-top: 2vw;
	}

	.stars-container {
		position: relative;
		display: inline-block;
		font-size: 5vw;
		color: #d6d6d6;
		/* 空星颜色 */
	}

	.stars-background {
		z-index: 0;
	}

	.stars-filled {
		position: absolute;
		top: 0;
		left: 0;
		white-space: nowrap;
		overflow: hidden;
		color: gold;
		/* 实星颜色 */
		z-index: 1;
	}
</style>
